# -*- coding: utf-8 -*-

'''
 classmethod
 将类函数可以不经过实例化而直接被调用

 用法：
 @classmethod
 def func(cls,...):
    do

cls 替代普通类函数中self
变为cls，代表当前操作的时类

staticmethod
将类函数可以不经过实例化而直接被调用，被该装饰器调用的函数不许传递self或cls参数，并且无法再该函数调用起他类函数或类变量
用法：
@staticmethod
def func():
    do

property
用法
@property
def func(self):
    do


'''

class Test(object):
    def __init__(self,a):
        self.a =a

    def run(self):
        print('run')
    @classmethod
    def add(cls,a,b):
        return a+b

t = Test(a="a")
t.run()
print(Test.add(1,2))

class Test1(object):
    @staticmethod
    def add(a,b):
        return a+b

print(Test1.add(10,10))

class Test3(object):
    def __init__(self,name):
        self.name = name

    @property
    def call_name(self):
        return 'hello {}'.format(self.name)


test3 = Test3("linxihong")
result = test3.call_name
print(result) # hello linxihong

